import { defineConfig, loadEnv, ConfigEnv } from "vite";
import plugins from "./build/plugins";
import { createProxy } from "./build/proxy";
import { ViteEnv } from "./build/env";
import path from "path";
const resolve = (dir: string) => path.join(__dirname, dir);
// https://vitejs.dev/config/

export default ({ command, mode }: ConfigEnv) => {
  // console.log(command, mode);
  //command "build" | "serve" 打包还是编译
  // mode 各种环境
  const root = process.cwd(); //项目根目录寻找env文件时使用

  const env = loadEnv(mode, root) as unknown as ViteEnv; // 获取配置的环境变量

  // console.log(env);

  return defineConfig({
    plugins,
    base: "/",
    resolve: {
      alias: [
        // '/@':resolve("src"), // 1
        {
          // 2
          find: /\/@\//,
          replacement: resolve("src") + "/",
        },
      ],
    },
    server: {
      port: Number(env.VITE_PORT), // 端口号
      proxy: createProxy(JSON.parse(env.VITE_PROXY)),
      hmr:true
    },
    build: {
      target: "es2015", // 打包成的语法支持
      outDir: "dist", // 指定输出路径
      assetsInlineLimit: 4096, //（1024为1Kb） 小于该大小的资源会被打包为base64
      terserOptions: {
        compress: {
          keep_infinity: true,
          // Used to delete console in production environment
          drop_console: env.VITE_DROP_CONSOLE as unknown as boolean // 生产环境去掉console
        }
      }, 
      brotliSize: false, // 启用/禁用 brotli 压缩大小报告。压缩大型输出文件可能会很慢，因此禁用该功能可能会提高大型项目的构建性能。
      chunkSizeWarningLimit: 1500, //chunk 大小警告的限制（以 kbs 为单位）
      cssCodeSplit:true, // false整合css到一个文件 
    },
  });
};
